package Lee_code;

import java.util.Arrays;

/**
 * @author blh
 * @date 2024年07月29日 19:43
 */
public class Lee_611_729 {
    public int triangleNumber(int[] nums) {
        // 三角形: 任意两边之和大于第三边
        int len = nums.length;
        Arrays.sort(nums);
        int res = 0;
        for (int i = 0; i < len - 2; i++) {
            int first = nums[i];
            // 再使用双指针法, 两个小的之和大于大的
            for (int left = i + 1; left < len - 1; left++) {
                int right = len - 1;
                while (left < right) {
                    if ((first + nums[left]) > nums[right]) {
                        res = res + right - left;
                        break;
                    } else {
                        right--;
                    }
                }
            }
        }
        return res;
    }
}
